package cn.ekgc.common.jwt;

import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@Component
public class JwtUtils {

    /**
     * 传入user获得token
     * @param user
     * @return
     */
    public String getToken(Map user){
        // header 固定
        // payload 不固定  （用户信息）
        // signature 固定
        Map<String,Object> header = new HashMap<>();
        header.put("alg","HS256");
        header.put("typ","JWT");
        Long t = System.currentTimeMillis() + 1000*60*7;
        Date time = new Date(t);
        String token= Jwts.builder()
                // header
                .setHeaderParams(header)
                // payload
                .setClaims(user)
                .setExpiration(time)
                // signature
                .signWith(SignatureAlgorithm.HS256,"admin")
                // 生成token
                .compact();
        return token;
    }

    /**
     * 解析token出对象
     * @param token
     * @return
     */
    public Object vertify(String token){

        Object body= Jwts.parser()
                .setSigningKey("admin")
                .parse(token) // 解析token
                .getBody();  // 获取payload
        return body;
    }

    // 获取用户信息
    public Object getUserInfo(Object user){
        return new Object();
    }
}